package com.only4play.practice.invoice.core.domainservice;

import com.only4play.practice.invoice.api.model.OrderRegisterModel;
import com.only4play.practice.invoice.api.model.OrderRegisterResultModel;
import com.only4play.practice.invoice.core.domainservice.model.exchange.ExchangeConditionModel;
import com.only4play.practice.invoice.core.domainservice.model.exchange.ExchangeInvoiceModel;
import com.only4play.practice.invoice.core.domainservice.model.exchange.ExchangeInvoiceResultModel;

import java.util.List;

/**
 * @author mdy
 * * @date 2024/9/15
 */
public interface IOrderReceiptDomainService {

    /**
     * 注册凭据
     */
    OrderRegisterResultModel orderRegister(OrderRegisterModel registerModel);

    /**
     * 凭据作废
     */
    boolean receiptAbandon(List<Long> ids);

    /**
     * 开票==换取发票
     */
    ExchangeInvoiceResultModel exchangeInvoice(ExchangeInvoiceModel exchangeInvoiceModel);

    /**
     * 根据条件开票
     */
    ExchangeInvoiceResultModel exchangeInvoiceByCondition(ExchangeConditionModel conditionModel);

    /**
     * 开票完成
     */
    void completeInvoice(List<Long> ids);

}
